﻿using Microsoft.Xna.Framework;

namespace GameBase.Cameras
{
    /// <summary>
    /// Defines an interface for basic camera management.
    /// </summary>
    public interface ICamera
    {
        #region Properties

        /// <summary>
        /// Gets or sets the camera's view matrix.
        /// </summary>
        Matrix View { get; set; }

        /// <summary>
        /// Gets or sets the camera's projection matrix.
        /// </summary>
        Matrix Projection { get; set; }

        /// <summary>
        /// Gets the camera's position.
        /// </summary>
        Vector3 Position { get; }

        /// <summary>
        /// Gets the direction that is "right" from the camera's point of view.
        /// </summary>
        Vector3 Right { get; }

        /// <summary>
        /// Gets the direction that is "up" from the camera's point of view.
        /// </summary>
        Vector3 Up { get; }

        /// <summary>
        /// Gets the direction that is "forward" from the camera's point of view.
        /// </summary>
        Vector3 Forward { get; }

        #endregion
   }
}
